import globals from 'globals'
import pluginJs from '@eslint/js'
import tseslint from 'typescript-eslint'
import pluginVue from 'eslint-plugin-vue'
import pluginPrettierRecommendedConfigs from 'eslint-plugin-prettier/recommended'
import parserVue from 'vue-eslint-parser'
import { readFile } from 'fs/promises'
const eslintrcAutoImport = JSON.parse(await readFile(new URL('./.eslintrc-auto-import.json', import.meta.url)))

export default [
	// eslint 默认推荐规则
	pluginJs.configs.recommended,
	// ts 默认推荐规则
	...tseslint.configs.recommended,
	// vue3 基础推荐规则
	...pluginVue.configs['flat/recommended'],
	// prettier 默认推荐规则
	pluginPrettierRecommendedConfigs,
	{
		ignores: ['**/dist/**', '**/node_modules/**', 'package.json', '.vscode/**', '**/.history/**'],
		languageOptions: {
			globals: {
				...globals.browser,
				...globals.es2020,
				...globals.node,
				...eslintrcAutoImport.globals,
				OptionType: 'readonly',
			},
			ecmaVersion: 2020,
			parser: parserVue,
			parserOptions: {
				parser: tseslint.parser,
			},
		},
		rules: {
			'no-unused-vars': ['off', { caughtErrors: 'none' }], // 禁止未使用变量
			'@typescript-eslint/no-unused-vars': ['off', { caughtErrors: 'none' }], // 禁止未使用变量
			'vue/no-unused-vars': ['off', { caughtErrors: 'none' }], // 禁止未使用变量
			'@typescript-eslint/no-explicit-any': ['off', { caughtErrors: 'none' }], // 禁止显式使用 any 关键字
			'vue/v-on-event-hyphenation': 'off', // 禁止html元素上事件函数名使用短横线连接
			'vue/multi-word-component-names': ['off'], // 禁止组件名应该多个词组成
			'vue/require-default-prop': 'warn', // 禁止props 参数 应该有默认值
			'vue/no-v-html': 'off', // 禁止不推荐使用 v-html
			'vue/no-mutating-props': 'warn', // 禁止 props 参数应该不能直接修改
			'prefer-const': 'off', // 禁止使用 let 声明从未使用的变量，除非该变量被声明为 const
		},
	},
]
